var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require("express-session");
const conf = require('./config');
const cors = require('cors');
var indexRouter = require('./routes/index');
var app = express();

var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));

app.use(cors({
  origin: conf.allowedOrigins,
  credentials: true  // 是否带cookie
}))

const cache = require('cache-all/memory');
cache.init({
  ttl: 90,
  isEnable: true
})

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'views/bitburner/dist')));
//session设置
let sessionMiddleware = session({
  secret: conf.session_token,
  cookie: {
    maxAge: 60 * 1000 * 30
  },
  resave: true,
  rolling: true,
  saveUninitialized: false
});



app.use(sessionMiddleware);
// 权限控制


app.use('/', indexRouter(app));

// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;
